#include "TADNIF.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <conio.h>

NIF PedirNIF()
{
	NIF N;
	char Datos[10];
	unsigned short cont;

	printf("Introduce el DNI: ");
	scanf("%[^\n]", Datos);

	for (cont=0;cont<9;cont++)
	{
		*(N.Numero+cont)=Datos[cont];
	}

	N.Letra=Datos[cont];
	return(N);
}

char GenerarLetra(int DNI)
{
	char LetraDNI[] = "TRWAGMYFPDXBNJZSQVHLCKE", Letra;

	Letra=LetraDNI[DNI%23];

	return(Letra);
	
}

NIF GenerarNIF(char Datos[10])
{
	
	NIF N;
	/*long nif;
	char Letra, nifc[9], nifreal[10];*/
	unsigned short cont;

	for (cont=0;cont<9;cont++)
	{
		*(N.Numero+cont)=Datos[cont];
	}
    N.Numero[cont+1]='\0'; 
	N.Letra=Datos[cont];

	/*nif=(rand()%1000000)+400000;
	Letra=GenerarLetra(nif);
	ltoa(nif, nifc, 1);
	strcpy(nifreal, nifc);
	strcat(nifreal, Letra);*/

	return(N);

}

int ValidarDatos(char Datos[10])
{
	NIF N;
	unsigned long Num;
	char LetraDNI[] = "TRWAGMYFPDXBNJZSQVHLCKE", LetraP;
	unsigned short cont;

	for (cont=0;cont<8;cont++)
	{
		*(N.Numero+cont)=Datos[cont];
	}

	N.Letra=Datos[cont];
	
	Num=atol(N.Numero);

	if (Num>99999999)
	{
		return(-1);
	}
	else
	{
		LetraP = LetraDNI[Num % 23];
		if (strcmp(LetraP, toupper(N.Letra))==0)
		{
			return(0);
		}
		else
		{
			return(-1);
		}
	}
	
}

void VisualizarNIF(NIF N)
{
	printf("El NIF es: %s",N.Numero);
	printf("%c", N.Letra);
}

int CompararNIF(NIF DNI1, NIF DNI2)
{
	if(atoi(DNI1.Numero)>atoi(DNI2.Numero))
	{
		/*if(strcmp(DNI1.Letra, DNI2.Letra)==0)
		{
			return(0);
		}
		else
		{
			return(-1);
		}*/
		return (1);
	}
	else
	{
		return (2);
	}
}

void CopiarNIF(NIF *NIF1, NIF NIF2)
{
	strcpy(NIF1->Numero,NIF2.Numero);
	NIF1->Letra=NIF2.Letra;
}